package com.utils
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.utils.Dictionary;
	
	public class BitmapManager
	{
		//private var _playerArr:vec = [];
		private const ROWANDCOLS:int = 8;
		private var _playerBmp:Bitmap;
		private static var _instance:BitmapManager

		/**
		 * 角色图片缓存，因为要重复利用，不能销毁，只读取 
		 */		
		public var roleBitmapDict :Dictionary;
		/**
		 * npc 的bitmapdata列表，已经切割好，重复利用 
		 */		
		public var npcBMDList :Array;
		/**
		 * 怪物的bitmapdata列表 ，已经切割好，重复利用 
		 */		
		public var monsterBMDList :Array;
		/**
		 * 技能动画字典 
		 */		
		public var skillDict :Dictionary;
		/**
		 * 是否已经有切割好的npc位图列表
		 */		
		private var npcIsHaveBMD :Boolean;
		/**
		 * 是否已经有切割好的怪物位图列表 
		 */		
		private var monsterIsHaveBMD :Boolean;
		/**
		 * 人物资源还没加载完时显示的默认图片  
		 */		
		private var _defRoleBMD :BitmapData;
		public function BitmapManager()
		{
			roleBitmapDict = new Dictionary();
//			_playerBmp = bmp;
//			cutBitmap();
		}
		
		
		public static function getInstance():BitmapManager
		{
			if(!_instance)
				_instance = new BitmapManager();
			return _instance
		}
		
		
		/**
		 * 将位图切割
		 * @param bmd 源
		 * @param row 第几行
		 * */
		public function cutBitmap(bmd:BitmapData,tileW:int,tileH:int,row:int):Array
		{
			var result:Array = [];
			for (var i:int = 0; i < ROWANDCOLS; i++) 
			{
				var bitmapdata:BitmapData = new BitmapData(tileW,tileH,true,0);
				bitmapdata.lock();
				bitmapdata.copyPixels(bmd,new Rectangle(i * tileW,row * tileH,tileW,tileH),new Point());
				bitmapdata.unlock();
				result.push(bitmapdata);
			}
			return result;
		}
	}
}